package com.starbugs.wehcat.aop;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;

@Component
@Aspect
public class UserAccessAspect {

  @Pointcut(value = "@annotation(UserAccess)")
  public void access() {

  }

  @Before("access()")
  public void deBefore(JoinPoint joinPoint) throws Throwable {
    System.out.println("second before");
  }

  @Around("@annotation(userAccess)")
  public Object around(ProceedingJoinPoint pjp, UserAccess userAccess) {
    //获取注解里的值
    System.out.println("second around:" + userAccess.desc());
    try {
      return pjp.proceed();
    } catch (Throwable throwable) {
      throwable.printStackTrace();
      return null;
    }
  }
}